Mac App Store 支持
概述
您可以通过官方 Mac App Store 或商店外分发您的 macOS 应用程序。但是,应用程序在分发之前应始终进行签名。未签名的应用程序将被 Gatekeeper 拒绝启动。
本指南将向您展示如何为 macOS 签署基于 NW.js 的应用程序。
先决条件
- 通过 iTunesConnect 创建 macOS 应用程序
- 从 Apple Developer 获取应用程序和安装程序证书。
- 如果您通过 **Mac App Store** 分发应用程序
- 第三方 Mac 开发者应用程序:Foo (XXXXXXXXXX)
- 第三方 Mac 开发者安装程序:Foo (XXXXXXXXXX)
- 如果您在 **商店外** 分发应用程序
- 开发者 ID 应用程序:Foo (XXXXXXXXXX)
- 开发者 ID 安装程序:Foo (XXXXXXXXXX)
- 如果您通过 **Mac App Store** 分发应用程序
构建应用程序
从 nwjs.io 下载 NW.js MAS 版本,并按照 打包和分发 中的说明构建您的应用。
签署应用程序
build_mas.py
用于为您的 macOS 应用签名。通过提供 --pkg
参数,该脚本可以生成可上传到 Mac App Store 的 .pkg
文件。
基本用法
python build_mas.py -C build.cfg -I myapp-dev.app -O MyApp.app
配置文件格式
配置文件 (build.cfg
) 是一个人类可读的文本文件。它包含用于签名和打包应用程序的重要设置。
ApplicationIdentity
和 InstallerIdentity
是用于签名和打包应用程序的证书名称。有关您需要的证书,请参阅 先决条件。
NWTeamID
用于建立用于启动基于 NW.js 的应用程序的 IPC 通道。它可以从 Apple Developer -> Membership -> Team ID 中获取。
ParentEntitlements
和 ChildEntitlements
应该是有效的 权利文件。默认情况下,您的应用程序使用以下最小权限进行签名。
entitlements-parent.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.application-groups</key> <string>NWTeamID.your.app.bundle.id</string> </dict> </plist>
entitlements-child.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.security.inherit</key> <true/> </dict> </plist>
阅读示例 build.cfg
以了解所有字段的详细含义。